컴퓨터과학

운영체제_01_운영체제 개론

작성자 : Heehyeon Yoo|2025-11-05
# 운영체제# 운영체제 개론# 이론

1. 운영체제(OS)의 기본 개념

  • 역사와 발전 과정
    • 초기 컴퓨터는 운영체제 없이 운영자가 직접 기계를 조작했다.
    • 이후 효율성을 위해 작업을 모아 한 번에 처리하는 일괄 처리(Batch) 시스템이 등장했다.
    • CPU 유휴 시간을 줄이기 위한 멀티프로그래밍, 여러 사용자가 동시에 시스템을 사용하는 시분할(Time-sharing) 시스템으로 발전했다.
    • 현재는 개인용 컴퓨터(Windows, macOS)를 넘어 모바일(Android, iOS), 실시간(RTOS), 분산 운영체제 등으로 분화되었다.
  • 운영체제의 구조 및 역할
    • 운영체제는 사용자와 컴퓨터 하드웨어 사이의 중재자 역할을 한다.
    • 핵심부인 커널(Kernel)이 자원(CPU, 메모리, 장치)을 관리하고 시스템을 보호한다.
    • 사용자는 쉘(Shell)이나 GUI 같은 인터페이스를 통해 커널에 명령을 전달한다.
    • 주요 역할은 자원 관리, 프로세스 관리, 시스템 보호, 사용자 인터페이스 제공이다.

2. 컴퓨터 하드웨어와 부팅

  • 컴퓨터 하드웨어의 구성 요소
    • 중앙처리장치(CPU): 명령어 해석 및 연산을 수행하는 핵심 장치.
    • 주기억장치(RAM): 실행 중인 프로그램과 데이터를 저장하는 휘발성 메모리.
    • 보조기억장치(SSD, HDD): 전원이 꺼져도 데이터를 보관하는 비휘발성 저장소.
    • 입출력 장치: 키보드, 마우스(입력) 및 모니터, 프린터(출력) 등.
    • 이 요소들은 시스템 버스(Bus)를 통해 데이터를 교환한다.
  • 컴퓨터의 부팅 과정
    1. 전원 공급(Power ON).
    2. ROM에 저장된 BIOS 또는 UEFI가 실행된다.
    3. POST(Power-On Self-Test)를 통해 하드웨어를 점검한다.
    4. 부트 로더(Boot Loader)가 보조기억장치에서 운영체제 커널을 찾아 주기억장치(RAM)로 불러온다.
    5. 운영체제 커널이 실행되며 시스템 초기화를 완료하고 사용자 인터페이스를 준비한다.

3. 프로세스 관리

  • 프로그램과 프로세스의 개념
    • 프로그램(Program): 디스크에 저장된 정적인 코드 덩어리.(예: chrome.exe 파일)
    • 프로세스(Process): 메모리에 적재되어 CPU에 의해 실행 중인 동적인 프로그램.
  • 멀티프로그래밍과 멀티프로세싱
    • 멀티프로그래밍(Multiprogramming): 하나의 CPU가 여러 프로세스를 번갈아 가며(Context Switching) 실행하여 CPU 유휴 시간을 줄이는 기법.
    • 멀티프로세싱(Multiprocessing): 두 개 이상의 CPU가 여러 프로세스를 동시에(병렬로) 처리하는 시스템.
  • 프로세스 상태와 컨텍스트 스위칭
    • 프로세스 상태: 프로세스는 생성(New), 준비(Ready), 실행(Running), 대기(Waiting), 종료(Terminated) 상태를 가진다.
    • 컨텍스트 스위칭(Context Switching): CPU가 현재 실행 중인 프로세스에서 다른 프로세스로 전환할 때, 현재 프로세스의 상태 정보(PCB)를 저장하고 새 프로세스의 상태를 불러오는 과정.
  • 프로세스 생성과 종료
    • 프로세스는 부모 프로세스에 의해 생성된다.(예: Unix의 fork() 시스템 콜)
    • 생성된 자식 프로세스는 부모와 독립적인 자원을 할당받는다.
    • 프로세스는 실행을 완료(exit)하거나, 오류가 발생하거나, 외부의 강제 명령(kill)에 의해 종료된다.

4. CPU 스케줄링

  • CPU 스케줄링의 개념과 목표
    • 준비(Ready) 큐에 있는 여러 프로세스 중 어떤 프로세스에 CPU를 할당할지 결정하는 정책이다.
    • 주요 목표는 CPU 이용률 극대화, 단위 시간당 처리율(Throughput) 향상, 평균 응답 시간 및 대기 시간 최소화, 공정성 보장이다.
  • 다양한 스케줄링 알고리즘
    • FIFO(First-In, First-Out): 큐에 먼저 도착한 순서대로 처리. 비선점 방식이며 간단하지만, 긴 작업이 짧은 작업을 막는 호위 효과(Convoy effect)가 발생할 수 있다.
    • SJF(Shortest Job First): 실행 시간이 가장 짧은 프로세스를 먼저 처리. 평균 대기 시간을 최소화하는 최적의 알고리즘이지만, 실행 시간을 예측하기 어렵고 긴 작업은 기아(Starvation) 상태에 빠질 수 있다.
    • RR(Round Robin): 각 프로세스에 동일한 시간 할당량(Time Quantum)을 주고, 시간 내에 완료하지 못하면 큐의 맨 뒤로 보낸다. 시분할 시스템에 적합하며 응답 시간이 빠르다.
    • MLFQ(Multi-Level Feedback Queue): 여러 우선순위 큐를 사용한다. 프로세스 특성(CPU 집중 vs I/O 집중)에 따라 큐 간 이동을 허용하는 동적 방식이다. 가장 복잡하지만 현대 OS에서 많이 사용된다.

5. 동기화와 교착 상태

  • 공유자원과 임계구역
    • 공유자원(Shared Resource): 여러 프로세스(또는 스레드)가 공동으로 접근하는 데이터나 장치.
    • 임계구역(Critical Section): 공유자원에 접근하는 코드 영역. 임계구역에는 한 번에 하나의 프로세스만 진입해야 한다(상호 배제).
  • 세마포어와 모니터
    • 세마포어(Semaphore): 임계구역 접근을 제어하는 정수형 변수(S). P(wait) 연산으로 자원을 획득하고 V(signal) 연산으로 자원을 반납한다.
    • 모니터(Monitor): 공유자원과 관련 연산(프로시저)을 캡슐화한 고급 동기화 도구. 프로그래밍 언어 수준에서 상호 배제를 보장하여 세마포어보다 사용하기 쉽다.
  • 데드락(Deadlock)의 개념과 해결 방법
    • 개념: 둘 이상의 프로세스가 서로 상대방이 가진 자원을 기다리며 무한 대기하는 교착 상태.
    • 발생 조건: 상호 배제, 점유와 대기, 비선점, 순환 대기 4가지 조건이 모두 충족되어야 한다.
    • 해결 방법: 조건 중 하나를 제거하는 예방(Prevention), 자원 할당 시 안전 상태를 검사하는 회피(Avoidance), 데드락 발생 시 복구하는 탐지 및 복구(Detection & Recovery)가 있다.

6. 메모리 관리

  • 메모리 종류와 메모리 할당 방식
    • 메모리 종류: CPU 내부의 레지스터, 캐시(L1, L2, L3)부터 주기억장치(RAM), 보조기억장치(SSD/HDD)까지 속도와 용량에 따라 계층 구조를 이룬다.
    • 메모리 할당 방식: 프로세스를 메모리에 적재하는 방식으로, 연속 할당(고정 분할, 가변 분할)과 불연속 할당(페이징, 세그먼테이션)이 있다.
  • 가상 메모리와 페이징, 세그먼테이션
    • 가상 메모리(Virtual Memory): 실제 물리 메모리(RAM) 크기보다 더 큰 주소 공간을 사용자에게 제공하는 기술. 디스크의 일부(스왑 공간)를 RAM의 확장처럼 사용한다.
    • 페이징(Paging): 논리 주소 공간을 '페이지'라는 고정 크기 블록으로, 물리 메모리를 '프레임'이라는 동일 크기 블록으로 나누어 관리한다. 외부 단편화를 해결한다.
    • 세그먼테이션(Segmentation): 논리 주소 공간을 코드, 데이터, 스택 등 의미 있는 '세그먼트' 단위(가변 크기)로 나누어 관리한다.

7. 입출력 및 파일 관리

  • 다양한 입출력 장치
    • 컴퓨터 시스템이 외부와 상호작용하기 위한 장치들이다.
    • 입력 장치: 마우스, 키보드, 스캐너 등.
    • 출력 장치: 모니터, 프린터, 스피커 등.
    • 입출력 겸용 장치: 하드디스크(HDD), SSD, 네트워크 카드 등.
  • 파일과 파일시스템
    • 파일(File): 보조기억장치에 저장된 관련 정보의 논리적 집합.
    • 파일시스템(Filesystem): 파일들을 체계적으로 저장, 관리, 검색할 수 있도록 디스크 상에 구현한 논리적 구조 및 관련 소프트웨어.(예: NTFS, FAT32, ext4, APFS) 파일의 생성, 삭제, 읽기, 쓰기 등을 관리한다.